<?php

/**
 * PerfilLogic
 * @package model
 * @subpackage logic
 * 
 */
class PerfilLogic extends LogicModel {

    public function __construct() {
        parent::__construct(new PerfilDAO());
    }

    public function listaDePerfisDoSistema($and = null, $orderby = null, $objectCollection = null) {
        $and = ($and !== null) ? " AND $and" : "";
        $where = "ide_sistema = " . OID_SIS . $and;
        return $this->listar($where, $orderby, $objectCollection);
    }

    public function ajaxExcluirFuncionalidadeFromPerfil($params) {
        $dados = array('ide_perfil' => $params['idPerfil'], 'ide_funcionalidade' => $params['idFuncionalidade']);
        $result = $this->deleteQuery(
                'seguranca.perfil__funcionalidade', "ide_perfil = :ide_perfil AND ide_funcionalidade = :ide_funcionalidade", $dados
        );
        return $result;
    }
    
    public function ajaxListPerfilFromSistema($params) {

        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nome', 'descricao', 'status');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_perfil', 'des_perfil', 'des_status' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_sistema = '{$params['idSistema']}' {$seach}";

        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objeto) {
                $link = "<a href='index.php?Perfil/informar/id/{$objeto->getId()}'>{$objeto->getNome()}</a>";
                $status = ($objeto->getStatus() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $output['aaData'][] = array(
                    utf8_encode($link),
                    utf8_encode($objeto->getDescricao()),
                    utf8_encode($status)
                );
                unset($link);
                unset($status);
            }
        }

        return json_encode($output);
    }

}

?>